home *** CD-ROM | disk | FTP | other *** search
/ 3D Game Programming All in One / 3D Game Programming All in One Disc.iso / 3D2E / RESOURCES / CH23 / hostscreen.cs next >
Text File  |  2006-09-25  |  2KB  |  73 lines

  1.  
  2.  
  3. //----------------------------------------
  4. function StartHost()
  5. {
  6.    %id = HostMissionList.getSelectedId();
  7.    %mission = getField(HostMissionList.getRowTextById(%id), 1);
  8.  
  9.    StopMusic();
  10.    createServer("MultiPlayer", %mission);
  11.    %conn = new GameConnection(ServerConnection);
  12.    RootGroup.add(ServerConnection);
  13.    %conn.setConnectArgs($pref::Player::Name);
  14.    %conn.setJoinPassword($Client::Password);
  15.    %conn.connectLocal();
  16. }
  17.  
  18.  
  19. //----------------------------------------
  20. function HostScreen::onWake()
  21. {
  22.    HostMissionList.clear();
  23.    %i = 0;
  24.    for(%file = findFirstFile($Server::MissionFileSpec);
  25.          %file !$= ""; %file = findNextFile($Server::MissionFileSpec))
  26.       if (strStr(%file, "CVS/") == -1 && strStr(%file, "common/") == -1)
  27.          HostMissionList.addRow(%i++, getMissionDisplayName(%file) @ "\t" @ %file );
  28.    HostMissionList.sort(0);
  29.    HostMissionList.setSelectedRow(0);
  30.    HostMissionList.scrollVisible(0);
  31. }
  32.  
  33.  
  34. //----------------------------------------
  35. function getMissionDisplayName( %missionFile )
  36. {
  37.    %file = new FileObject();
  38.  
  39.    %MissionInfoObject = "";
  40.  
  41.    if ( %file.openForRead( %missionFile ) ) {
  42.         %inInfoBlock = false;
  43.  
  44.         while ( !%file.isEOF() ) {
  45.             %line = %file.readLine();
  46.             %line = trim( %line );
  47.  
  48.             if( %line $= "new ScriptObject(MissionInfo) {" )
  49.                 %inInfoBlock = true;
  50.             else if( %inInfoBlock && %line $= "};" ) {
  51.                 %inInfoBlock = false;
  52.                 %MissionInfoObject = %MissionInfoObject @ %line;
  53.                 break;
  54.             }
  55.  
  56.             if( %inInfoBlock )
  57.                %MissionInfoObject = %MissionInfoObject @ %line @ " ";
  58.         }
  59.  
  60.         %file.close();
  61.     }
  62.     %MissionInfoObject = "%MissionInfoObject = " @ %MissionInfoObject;
  63.     eval( %MissionInfoObject );
  64.  
  65.    %file.delete();
  66.  
  67.    if( %MissionInfoObject.name !$= "" )
  68.       return %MissionInfoObject.name;
  69.    else
  70.       return fileBase(%missionFile);
  71. }
  72.  
  73.